# ***********************************************************
#                    Режимы сборки и развертывания
# ***********************************************************

# DocHub может работать в трех режимах:
#   (F) frontend - "Толстый" клиент. Вся бизнес-логика находится на стороне фронта. 
#   (FB) frontend + backend - "Тонкий" клиент. Бизнес-логика в основном находится на стороне backend.
#   (P) IDEA Plugin - Плагин для IDEA. Бизнес-логика в основном находится на стороне плагина.


# ***********************************************************
#                          Переменные среды
# ***********************************************************

# (F / FB) URI в формате DocHub корневого манифеста (обязательно)

# VUE_APP_DOCHUB_ROOT_MANIFEST = workspace/sberauto/root.yaml

# Варианты использования:
#   documentation/root.yaml - (F / FB) Относительная ссылка на файл расположенный в папке @/public/
#   https://dochub.info/documentation/root.yaml - (F / FB) прямая ссылка на внешний http/https ресурс
#   gitlab:34:main@root.yaml - Прямая ссылка на на файл в GitLab репозитории. 
#                              (F) Может использоваться только при указании VUE_APP_DOCHUB_PERSONAL_TOKEN или VUE_APP_DOCHUB_GITLAB_URL + VUE_APP_DOCHUB_APP_ID 
#                              (FB) Может использоваться только при указании VUE_APP_DOCHUB_PERSONAL_TOKEN
#       Структура ссылки: 
#       gitlab      - протокол GitLab
#       34          - идентификатор репозитория
#       main        - бранч
#       root.yaml   - путь к файлу
#       
#   file://root.yaml - (FB) Прямая ссылка на файл в хранилище VUE_APP_DOCHUB_BACKEND_FILE_STORAGE. 
#                       Если VUE_APP_DOCHUB_BACKEND_FILE_STORAGE не задан, то ./public/*
#   bitbucket:myproject:myrepo:mybranch@dochub.yaml Прямая ссылка на на файл в BitBucket репозитории.
#                              (F/FB) Может использоваться только при указании VUE_APP_DOCHUB_PERSONAL_TOKEN

# (F / FB) Идентификатор документа главной страницы (необязательно). По умолчанию dochub_welcome
# VUE_APP_DOCHUB_ROOT_DOCUMENT=dochub_welcome

# (F / FB) URL GitLab (необязательно)
# VUE_APP_DOCHUB_GITLAB_URL=https://foo.space
# с base url слеш на конце обязателен
# VUE_APP_DOCHUB_GITLAB_URL=https://foo.space/baseurl/

# (F / FB) URL BitBucket (необязательно)
# VUE_APP_DOCHUB_BITBUCKET_URL=https://foo.space
# с base url слеш на конце обязателен
# VUE_APP_DOCHUB_BITBUCKET_URL=https://foo.space/baseurl/

# (F / FB) Персональный токен gitlab/bitbucket. Используется для развертывания в backend режиме и для локальной разработки (npm run serve)
# VUE_APP_DOCHUB_PERSONAL_TOKEN=9H...FR

# (FB) Secret для доступа к перезагрузке данных архитектуры
# VUE_APP_DOCHUB_RELOAD_SECRET=9H...FR

# (F) Идентификатор приложения зарегистрированного в GitLab (обязательно, если есть VUE_APP_DOCHUB_GITLAB_URL и нет VUE_APP_DOCHUB_PERSONAL_TOKEN)
# https://docs.gitlab.com/ee/integration/oauth_provider.html
# VUE_APP_DOCHUB_APP_ID=5f3...f0

# (F) Секрет приложения (обязательно, если есть VUE_APP_DOCHUB_GITLAB_URL и нет VUE_APP_DOCHUB_PERSONAL_TOKEN)
# https://docs.gitlab.com/ee/integration/oauth_provider.html
# VUE_APP_DOCHUB_CLIENT_SECRET=1e4...384

# (F / FB) Сервер рендеринга PlantUML (По умолчанию www.plantuml.com/plantuml/svg/)
# При сборке через docker-compose по умолчанию localhost:8079/svg/
# VUE_APP_PLANTUML_SERVER=localhost:8079/svg/

# (F / FB) Метод запроса к серверу рендеринга PlantUML (По умолчанию GET)
# POST - в теле запрос в формате plantuml как есть
# POST_COMPRESSED - аналогично GET сжат zopfli, но не перекодирован в base64
# VUE_APP_PLANTUML_REQUEST_TYPE= GET | POST | POST_COMPRESSED

# (P) Если "plugin" сборка осуществляется для использования в IDEA плагине https://github.com/RabotaRu/DocHubIdeaPlugin
# Для production сборки используйте npm run plugin.
# Данный параметр удобен для разработки в режиме плагина, т.к. подключает моки $PAPI.
# VUE_APP_DOCHUB_MODE=plugin

# (PBF) Отключает "hot reload" в DEV режиме
# VUE_APP_DOCHUB_HOTRELOAD=off

# (BF) Если "backend" сборка осуществляется для работы с backend
# Данный параметр удобен для разработки в режиме backend.
# VUE_APP_DOCHUB_MODE=backend

# (F/BF) Определяет тип кэширования при сборке webpack
#   memory - по умолчанию. Кэширование ведется в памяти. Оптимизирует только текущую сборку. 
#   filesystem - Кэширование ведется в файловой системе. Оптимизирует текущую и последующие сборки. Радикальный эффект заметен на последующих сборках.
# VUE_APP_DOCHUB_BUILDING_CACHE= memory / filesystem

# (BF) Определяет принцип кэширования ответов к Data Lake через backend
#   none    - не кэшируется (по умолчанию)
#   redis   - для кеширования используется СУБД Redis (https://redis.io/). 
#             Конфигурация подключения задается в переменной VUE_APP_DOCHUB_REDIS_URL
#   memory  - кеширование в памяти. При перезагрузке буде очищаться. 
#
#   Иное значение рассматривается как относительный путь к папке кеширования. Папка должна существовать!
#   В этом случае результат запроса будет сохраняться в файле. При перезагрузке кэш будет сохраняться. 
#   Для его очистки необходимо самостоятельно очистить папку с кэшем. 
#   Пример пути:
#       VUE_APP_DOCHUB_DATALAKE_CACHE=cache/


# (F / FB) Если "y" подключает в описание документацию DocHub
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS= y / n

# (F / FB) Содержит ссылку на базовую метамодель. По умолчанию - /metamodel/root.yaml
# VUE_APP_DOCHUB_METAMODEL = /metamodel/root.yaml

# (F / FB / P) (УСТАРЕЛО с версии 3.0.2) Определяет движок рендеринга (graphviz | smetana | elk). По умолчанию ELK
# VUE_APP_DOCHUB_RENDER_CORE=ELK
# С версии v3.0.2 конфигурирование осуществляется через параметры сущности "contexts" см. документацию

# (F / FB) [КЭШ] Включить/отключить кэширование(NONE | HEAD | GET) - По умолчанию NONE
# VUE_APP_DOCHUB_CACHE=NONE

# (F / FB) [УРОВЕНЬ кэширования] (1 | 2) - По умолчанию 1
# 1 - [low level] кэш сетевых запросов(requests)
# 2 - [high level] full кэш(уровень 1 + манифест)
# VUE_APP_DOCHUB_CACHE_LEVEL=1

# (F) Анализатор запросов JSONata
# Выводит информацию о выполняемых запросах в консоль
# VUE_APP_DOCHUB_JSONATA_ANALYZER= y / n

# (FB) Режим backend
# Если установлено, считается, что DocHub функционирует в режиме frontend + backend.
# По умолчанию DocHub функционирует в режиме "толстый клиент" (F). Т.е. вся бизнес-логика реализуется в frontend.
# VUE_APP_DOCHUB_BACKEND_URL= http://localhost:3030

# (FB) Порт для backend сервера. По умолчанию 3030.
# VUE_APP_DOCHUB_BACKEND_PORT=3030

# (FB) Каталог, где размещаются файлы манифестов
# По умолчанию @/public/
# ВНИМАНИЕ! Размещение файлов в @/public/ будет приводить к их прямой доступности из фронта по URL.
# VUE_APP_DOCHUB_BACKEND_FILE_STORAGE=~/DocHub/storage

# (B) Callback URL уведомления о наличии ошибок при загрузке манифестов
# В случае наличия ошибок при загрузке манифестов URL будет вызван методом GET 
# VUE_APP_DOCHUB_BACKEND_EVENT_LOADING_ERRORS_FOUND=http://foo.local/error


# (B) Интеграция с СУБД Redis (https://redis.io/)
# Redis применяется для кэширования результатов запросов на стороне backend, а также для создания кластера DocHub.
# Формат URL подключения: redis[s]://[[username][:password]@][host][:port][/db-number]
# Пример: redis://alice:foobared@awesome.redis.server:6380
# По умолчанию значение - redis://localhost:6379
# VUE_APP_DOCHUB_REDIS_URL=redis://localhost:6379


# (B) Кластер DocHub (beta)
# Обеспечивает высокую доступность сервиса. На производительность не влияет. 
# Количество нод в кластере условно не ограничено. Для работы кластер требует Redis.
# По умолчанию кластер выключен (off).
# VUE_APP_DOCHUB_CLUSTER= on / off



# ***********************************************************
#                   Примеры конфигурирования
# ***********************************************************

# (F)******** Портал с документацией DocHub *****************

# Развертывание в режиме frontend (толстый клиент)
# содержимое файла .env - ПУСТО.

# Команда сборки:
#   npm run build
# Результат:
#   - В папке ./dist будет сгенерированы статические файлы, которые нужно подключить к WEB серверу
#   - Войдя на портал, пользователь увидит только документацию DocHub.
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.



# (F)******** Портал с собственной документацией *****************

# Развертывание в режиме frontend (толстый клиент)
# содержимое файла .env:

# VUE_APP_PLANTUML_SERVER=https://plantuml.local/svg/
# VUE_APP_DOCHUB_ROOT_MANIFEST=workspace/sberauto/root.yaml

# Команда сборки:
#   npm run build
# Результат:
#   - В папке ./dist будет сгенерированы статические файлы, которые нужно подключить к WEB серверу
#   - Войдя на портал, пользователь увидит документацию DocHub
#   - Войдя на портал, пользователь увидит документацию размещенную по пути ./public/workspace/sberauto/*
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием собственного сервера https://plantuml.local/svg/ (требуется развернуть).



# (F)* Портал с собственной документацией и без документации DocHub **

# Развертывание в режиме frontend (толстый клиент)
# содержимое файла .env:

# VUE_APP_DOCHUB_ROOT_MANIFEST=workspace/sberauto/root.yaml
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS=n

# Команда сборки:
#   npm run build
# Результат:
#   - В папке ./dist будет сгенерированы статические файлы, которые нужно подключить к WEB серверу
#   - Войдя на портал, пользователь увидит документацию размещенную по пути ./public/workspace/sberauto/*
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.



# (F)* Портал с собственной документацией из GitLab без авторизации **

# Развертывание в режиме frontend (толстый клиент)
# содержимое файла .env:

# VUE_APP_DOCHUB_GITLAB_URL=https://gitlab.com/
# VUE_APP_DOCHUB_ROOT_MANIFEST=gitlab:43847396:master@root.yaml
# VUE_APP_DOCHUB_PERSONAL_TOKEN=gl...4g
# VUE_APP_PLANTUML_SERVER=https://plantuml.local/svg/

# Команда сборки:
#   npm run build
# Результат:
#   - В папке ./dist будет сгенерированы статические файлы, которые нужно подключить к WEB серверу
#   - Войдя на портал, пользователь увидит документацию размещенную по в репозитории GitLab - gitlab:43847396:master@root.yaml
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием собственного сервера https://plantuml.local/svg/ (требуется развернуть).



# (F)* Портал с собственной документацией из GitLab с авторизацией **

# Развертывание в режиме frontend (толстый клиент)
# содержимое файла .env:

# VUE_APP_DOCHUB_GITLAB_URL=https://gitlab.com/
# VUE_APP_DOCHUB_ROOT_MANIFEST=gitlab:43847396:master@root.yaml
# VUE_APP_DOCHUB_APP_ID=a00...27f
# VUE_APP_DOCHUB_CLIENT_SECRET=5d8...372

# Команда сборки:
#   npm run build
# Результат:
#   - В папке ./dist будет сгенерированы статические файлы, которые нужно подключить к WEB серверу
#   - Войдя на портал, пользователь будет перенаправлен на авторизацию GitLab
#   - После авторизации пользователь увидит документацию размещенную по в репозитории GitLab - gitlab:43847396:master@root.yaml
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.



# (FB)******** Портал с документацией DocHub и backend *****************

# Развертывание в режиме frontend + backend (тонкий клиент)
# содержимое файла .env - ПУСТО

# Команда сборки:
#   npm run backend
# Результат:
#   - Будет собран frontend проект в режиме backend
#   - Будет запущен nodejs сервер на порту 3030 (http://localhost:3030/), где будет поднят портал и backend сервер
#   - Войдя на портал, пользователь увидит только документацию DocHub.
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.



# (FB)* Портал с собственной документацией и backend, без документации DocHub**

# Развертывание в режиме frontend + backend (тонкий клиент)
# содержимое файла .env:

# VUE_APP_DOCHUB_ROOT_MANIFEST=workspace/sberauto/root.yaml
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS=n


# Команда сборки:
#   npm run backend
# Результат:
#   - Будет собран frontend проект в режиме backend
#   - Будет запущен nodejs сервер на порту 3030 (http://localhost:3030/), где будет поднят портал и backend сервер
#   - Войдя на портал, пользователь увидит документацию размещенную по пути ./public/workspace/sberauto/*
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.



# (FB) Портал с собственной документацией и backend, без документации DocHub, с кешированием в Redis

# Развертывание в режиме frontend + backend (тонкий клиент) + Redis
# содержимое файла .env:

# VUE_APP_DOCHUB_ROOT_MANIFEST=workspace/sberauto/root.yaml
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS=n
# VUE_APP_DOCHUB_DATALAKE_CACHE=redis
# VUE_APP_DOCHUB_REDIS_URL=redis://alice:foobared@awesome.redis.server:6380


# Команда сборки:
#   npm run backend
# Результат:
#   - Будет собран frontend проект в режиме backend
#   - Будет запущен nodejs сервер на порту 3030 (http://localhost:3030/), где будет поднят портал и backend сервер
#   - Войдя на портал, пользователь увидит документацию размещенную по пути ./public/workspace/sberauto/*
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.
#   - Результаты запросов будут кэшироваться в Redis, что увеличит производительность



# (FB) Портал с собственной документацией в кластере, без документации DocHub, с кешированием в Redis

# Развертывание в режиме frontend + backend (тонкий клиент) + Redis + Cluster
# Для работы кластера необходимо самостоятельно развернуть балансировщик запросов.
# Например на nginx - https://nginx.org/ru/docs/http/ngx_http_upstream_module.html
# Недоступная нода определяется по коду ответа - 503.
#
# Конфигурация идентична для всех нод. Содержимое файла .env:

## Доступ к ресурсам с манифестами должен быть у всех нод кластера
# VUE_APP_DOCHUB_ROOT_MANIFEST=workspace/sberauto/root.yaml
# VUE_APP_DOCHUB_APPEND_DOCHUB_DOCS=n
# VUE_APP_DOCHUB_DATALAKE_CACHE=redis
# VUE_APP_DOCHUB_REDIS_URL=redis://alice:foobared@awesome.redis.server:6380
# VUE_APP_DOCHUB_CLUSTER=on
# VUE_APP_DOCHUB_BACKEND_PORT=3030
## Вызов бэкенда должен происходить через балансировщик, который перенаправляет запросы на действующую ноду.
# VUE_APP_DOCHUB_BACKEND_URL=http://node-balancer:3030


# Команда сборки:
#   npm run backend
# Результат:
#   - Будет собран frontend проект в режиме backend
#   - Будет запущена нода кластера на порту 3030 (http://localhost:3030/), где будет поднят портал backend сервер
#   - Войдя на портал, пользователь увидит документацию размещенную по пути ./public/workspace/sberauto/*
#   - Рендеринг PlantUML диаграмм будет осуществляться с использованием публичного сервера с ограничением размера контента.
#   - Результаты запросов будут кэшироваться в Redis, что увеличит производительность
#   - Запросы к backend будут направляться на балансировщик, который перенаправит их на действующую ноду
#   - Ноды backend будут работать в кластере, что увеличит надежность


# Больше информации о переменных среды выполнения
# https://cli.vuejs.org/ru/guide/mode-and-env.html
